<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    </style>
</head>

<body>
    <div id="app">
        <p>str:{{str}}</p>
        <p>reverseStr：{{reverseStr}}</p>
        <input type="button" value="修改str" @click="changeStr">
        <p>result：{{result}}</p>
        <hr/>
        <p>姓名：{{person.name}}</p>
        <p>年龄：{{person.age}}</p>
        <input type="button" value="长大" @click="addAge">
    </div>
</body>

</html>
<script src="./js/vue2.js"></script>
<script>

    let vm = new Vue({
        el: "#app",
        data: {
            str: "hello vue",
            person:{
                name:"刘勇凡",
                age:12
            },
            result:""
           
        },
        methods: {
            changeStr(){
                this.str +="1";
            },
            addAge(){
                this.person.age++;
                // this.person = {
                //     ...this.person,
                //     age:this.person.age+1
                // }
            }
        },
        computed:{
            reverseStr:function(){
                // 计算属性里只能有同步代码。因为计算属性需要返回一个值。
                console.log("computed：str变了");
                return  this.str.split("").reverse().join("");
            }
        },
        watch:{
            // str:function(newVal,oldVal){
            //     console.log("watch：str变了",newVal);
            //     // 在watch里写的可以是异步代码，或者开销比较大的代码。
            //     setTimeout(()=>{
            //         this.result = "结果"
            //     },1000)
            // }
            str:{
                handler:function(newVal,oldVal){
                    console.log("watch：str变了",newVal);
                    // 在watch里写的可以是异步代码，或者开销比较大的代码。
                    setTimeout(()=>{
                        this.result = "结果"
                    },1000)
                },
                immediate:true
            },
            person:{
                handler:function(newVal){
                    console.log("您长大了",newVal);
                },
                deep:true
            }
        }
    });



</script>